import js from '@eslint/js'
import pluginVue from 'eslint-plugin-vue'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
import prettier from 'eslint-plugin-prettier'

export default [
  {
    name: 'app/files-to-lint',
    files: ['**/*.{js,mjs,jsx,vue}'] // 要检查的文件
  },

  {
    name: 'app/files-to-ignore',
    ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'] // 忽略的文件
  },

  // JavaScript 推荐规则
  js.configs.recommended,
  ...pluginVue.configs['flat/essential'],
  // Prettier 规则（跳过格式化）
  skipFormatting,

  // 自定义规则
  {
    plugins: {
      prettier,
      vue: pluginVue
    },
    rules: {
      // Prettier 校验规则
      'prettier/prettier': ['error', { endOfLine: 'auto' }],
      // 常规 JavaScript 规则
      'no-var': 'error', // 禁止使用 var
      'no-multiple-empty-lines': ['warn', { max: 1 }], // 限制多个空行
      'no-unexpected-multiline': 'error', // 禁止意外的多行
      'no-useless-escape': 'off', // 禁止不必要的转义字符
      // Vue 规则
      'vue/multi-word-component-names': 'off', // 允许单词组件名称
      'vue/script-setup-uses-vars': 'error', // 确保 script setup 变量在 template 中被正确标记
      'vue/no-mutating-props': 'off', // 允许 props 修改
      'vue/attribute-hyphenation': 'off', // 不强制属性命名样式
      'vue/no-multiple-template-root': 'off', // 关闭多根节点规则
      // 启用 vue/no-undef-properties 规则
      'vue/no-undef-properties': 'error'
    },
    languageOptions: {
      globals: {
        ElMessage: 'readonly',
        ElMessageBox: 'readonly',
        ElLoading: 'readonly'
      }
    }
  }
]
